# -*- coding: utf-8 -*-
__author__ = 'lztkdr'
__date__ = '2020/4/3 15:52'

"""

现在我们有全球排名靠前的10000本书的数据，那么请统计一下下面几个问题：
	不同年份书的数量
	不同年份书的平均评分情况

收据来源：https://www.kaggle.com/zygmunt/goodbooks-10k

"""

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Pycharm输出窗口有省略号，数据显示不全解决方法
pd.set_option('display.max_rows', 10)
pd.set_option('display.max_columns', 10000)
pd.set_option('display.width', 1000)

# 如果要显示中文标题和坐标表示，需要添加以下两行代码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

print(
	"===========================================================================================================================")
file_path = './books.csv'
df = pd.read_csv(file_path)
# 通过info 发现 original_publication_year 有缺失数据
print(df.info())
print("========================================")
# 对于年份，是不好做计算填充数据， dropna 没法直接 删除  original_publication_year 为 nan 的数据
# df = df.dropna(axis=1)
# 这里用筛选 处理 nan 数据
df = df[pd.notnull(df["original_publication_year"])]
# 不同年份书的数量
grouped = df.groupby(by='original_publication_year').count()['book_id'].sort_values(ascending=False)

print("grouped type:", type(grouped))
print("grouped.index.name:", grouped.index.name)
print("grouped.index.names:", grouped.index.names)
print("grouped.shape:", grouped.shape)
print("grouped.ndim:", grouped.ndim)
print("grouped.dtypes:", grouped.dtypes)
print(grouped)

x = list(grouped.index.astype(int))[:10]

# matplotlib 画图 x 轴 有不按顺序显示的情况，这个时候，要把 x 轴转为 字符串就 OK 了。
x = [str(j)+ '年' for j in x]

y = list(grouped.values)[:10]
print("grouped.index:\n", x)
print("grouped.values:\n", y)

plt.figure(figsize=(20, 8), dpi=80)

plt.bar(x, y, color='orange', width=0.3)

plt.grid()
plt.show()

print("========================================")
